<!--
 * @Description: 
 * @Author: xiongkuobiao
 * @Date: 2023-06-06 15:11:00
 * @LastEditors: xiongkuobiao
 * @LastEditTime: 2023-12-25 16:31:11
-->
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <body></body>
  <script>
    // 用法如下:
    function fn1(x) {
      return x + 1
    }
    function fn2(x) {
      return x + 2
    }
    function fn3(x) {
      return x + 3
    }
    function fn4(x) {
      return x + 4
    }

    // function demo(...fn) {
    //   return function (num) {
    //     return fn.reduce((pre, next) => {
    //       console.log(next(pre))
    //       return next(pre)
    //     }, num)
    //   }
    // }

    // let a = demo(fn1, fn2, fn3, fn4)
    // console.log(a(1))

    // function compose(...fn) {
    //   return (num) => {
    //     return fn.reduce((pre, cur) => {
    //       return cur(pre)
    //     }, num)
    //   }
    // }

    // function compose(...fn) {
    //   return function (num) {
    //     // num为第一个数字
    //     fn.reduce((pre, cur) => {
    //       return cur(pre);
    //     }, num);
    //   };
    // }

    // console.log(a(1)); // 1+4+3+2+1=11

    // function compose(...fn) {
    //   return function (num) {
    //     return fn.reduce((pre, cur) => {
    //       console.log(cur(pre))
    //       return cur(pre)
    //     }, num)
    //   }
    // }
    // const a = compose(fn1, fn2, fn3, fn4)
    // console.log(a(1))
  </script>
</html>
